package Algorithm.Arrays;

import java.util.Arrays;

/**
 * ClassName:ArraysText001
 * Package:Algorithm.Arrays
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/2/4-16:11
 * @Version:v1.0
 */
public class ArraysText001 {
    /*Algorithm.Arrays:操作数组的工具类*/
    public static void main(String[] args) {


        //toString:将数组变成字符串
        System.out.println("----------toString----------");
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        System.out.println(Arrays.toString(arr));


        //binarySearch:二分查找法查找元素
        //细节：二分查找前提,数组中的元素必须是有序的,数组中的元素必须是升序的
        //如果说要查找的数据是存在的,那么返回值是真实索引
        //如果说要查找的数据是不存在,那么返回值是  (-插入点 - 1)
        System.out.println("----------binarySearch----------");
        System.out.println(Arrays.binarySearch(arr, 5));
        System.out.println(Arrays.binarySearch(arr, 2));
        System.out.println(Arrays.binarySearch(arr, 20));//-10


        //copyOf:拷贝数组
        //参数1：老数组
        //参数2：新数组的长度
        //如果新数组的长度小于老数组的长度,会部分拷贝
        //如果新数组的长度等于老数组的长度,会完全拷贝
        //如果新数组的长度大于老数组的长度,会补上默认的初始值
        System.out.println("----------copyOf----------");
        int[] newArr1 = Arrays.copyOf(arr, 9);
        System.out.println(Arrays.toString(newArr1));


        //copyOfRange:拷贝数组(指定范围)
        //细节：包头不包尾,包左不包右
        System.out.println("----------copyOfRange----------");
        int[] newArr2 = Arrays.copyOfRange(arr, 0, 8);
        System.out.println(Arrays.toString(newArr2));

        //fill:填充数组
        System.out.println("----------fill----------");
        Arrays.fill(arr,100);
        System.out.println(Arrays.toString(arr));

        //sort:排序
        //默认情况下,给基本数据类型进行升序排序,底层原理：快速排序
        System.out.println("----------sort----------");
        int []arr1={5,6,9,1,3,7,11,26,56,2,561,58};
        Arrays.sort(arr1);
        System.out.println(Arrays.toString(arr1));
    }
}
